Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Markup languages and procedural languages are two kinds of computer languages. A markup language such as extensible markup language (XML) and hypertext markup language (HTML) is declarative in nature, while a procedural language (e.g., C programming language C++ programming language) is imperative in nature. From a functionality perspective, markup languages are usually not Turing complete. On the other hand, procedural languages are Turing complete, which means procedural languages are more powerful than markup languages. However, from a usability perspective, a markup language is typically much easier to learn. The number of people who can write HTML far exceeds the number of people who can program in a procedural language.
Attempts have been made to combine a markup language with a procedural language in order to provide a programming environment that is accessible to beginners who are not inclined to learn a procedural language, but at the same time is powerful enough for experienced programmers who need a more structured language in order to develop sophisticated software components. For example, JavaFX and ECMAScript for XML represent attempts at integrating a markup language into a procedural language. Adobe® AIR, XAML, and ZUML represent attempts at integrating a procedural language into a markup language. These attempts have limited capability. For example, tag structures are all static and tag object mappings are shallow.
A technology called JavaServer Pages (JSP) allows software developers to create dynamically generated web pages based on HTML or XML. However, JSP separates tag definitions from tag usage into two different languages having completely different syntaxes. JSP can therefore be inconvenient to use, even for experienced programmers not to mention beginners.